<?php

namespace App\Handle;
use zgldh\QiniuStorage\QiniuStorage;
use Image;

class UploadFile{
    public static function uploadMultipleFIles($request, $destinationPath){
        // 设置超时时间为没有限制
        ini_set("max_execution_time", "60");

        $file = $request->file('file');
        $filePath =[];  // 定义空数组用来存放图片路径
//        foreach ($file as $key => $value) {//判断上传的文件的正确性
//            //判断图片上传中是否出错
//            if (!$value->isValid()) {
//                return Restext::res(1, "上传图片出错，请重试！");
//            }
//            //此处防止没有多文件上传的情况
//            if(!empty($value)){
//                $allowed_extensions = ["png", "jpg", "jpeg", "pdf", "PNG", 'JPG', 'JPEG', 'PDF'];
//                if($value->getClientOriginalExtension() && !in_array($value->getClientOriginalExtension(), $allowed_extensions)) {
//                    return Restext::res(1, '您只能上传PNG、JPG或pdf格式的文件！');
//                }
//                //判断文件的尺寸
//                if($value -> getClientSize() > 10 *1024 * 1024){
//                    return Restext::res(1, '图片尺寸不能大于10M！');
//                }
//            }else{
//                return Restext::res(1, "上传图片出错，请重试！");
//            }
//        }

        $current_host = $request->server('HTTP_HOST');

        $extension = $file->getClientOriginalExtension();// 上传文件后缀
        $fileName = date('YmdHis').substr(md5(mt_rand(10000000,99999999)), 10, 10).substr(microtime(), 2, 5).'.'.$extension; // 重命名
        $fileName2 = date('YmdHis').substr(md5(mt_rand(10000000,99999999)), 10, 10).substr(microtime(), 2, 5).'.'.$extension; // 重命名
        $file->move($destinationPath, $fileName);
        $file_path = 'http://'.$current_host.'/'.$destinationPath.'/'.$fileName2;

        $documentRoot = $_SERVER['DOCUMENT_ROOT'];
        $img = Image::make($documentRoot.'/'.$destinationPath.'/'.$fileName);
        $img->resize(900, null, function ($constraint) {
            $constraint->aspectRatio();
        });
        $img->save($documentRoot.'/'.$destinationPath.'/'.$fileName2);

        return Restext::res(0, "上传成功！", $file_path);
    }

    public function pdftoimg(){
        // 把pdf转成png，并拼接图片（兼容ios预览无法显示签章问题）
        $path = '';
        $imgArr = Handler::pdfToPng($path,$_SERVER['DOCUMENT_ROOT'].'/file/');

        $img = '';

        if($imgArr&&is_array($imgArr)){

            $img = Handler::spliceImg($imgArr,$_SERVER['DOCUMENT_ROOT'].'/file/agreement/');

        }
    }

    /**
     * @param Request $request
     * @return string
     * 七牛上传图片
     */
    public static function uploadMulFile($request, $prefix = 'customer')
    {
        // 设置超时时间为没有限制
        ini_set("max_execution_time", "60");

        $file = $request->file('file');
        $filePath =[];  // 定义空数组用来存放图片路径
        foreach ($file as $key => $value) {//判断上传的文件的正确性
            //判断图片上传中是否出错
            if (!$value->isValid()) {
                return Restext::res(1, "上传图片出错，请重试！");
            }
            //此处防止没有多文件上传的情况
            if(!empty($value)){
                $allowed_extensions = ["png", "jpg", "jpeg", "pdf", "PNG", 'JPG', 'JPEG', 'PDF'];
                if($value->getClientOriginalExtension() && !in_array($value->getClientOriginalExtension(), $allowed_extensions)) {
                    return Restext::res(1, '您只能上传PNG、JPG或pdf格式的文件！');
                }
                //判断文件的尺寸
                if($value -> getClientSize() > 10 * 1024 * 1024){
                    return Restext::res(1, '图片尺寸不能大于10M！');
                }
            }else{
                return Restext::res(1, "上传图片出错，请重试！");
            }
        }

        //初始化
        $disk = QiniuStorage::disk('qiniu');
        //循环上传
        foreach ($file as $key => $value){
            // 重命名文件
            $fileName = md5($value->getClientOriginalName().time().rand(1111, 9999999)).randomkeys(10).'.'.$value->getClientOriginalExtension();
            // 上传到七牛
            $bool = $disk->put($prefix.'_'.$fileName,file_get_contents($value->getRealPath()));
            if ($bool) {
                $path = $disk->downloadUrl($prefix.'_'.$fileName);
                $filePath[] = $path;
            }
        }
        $implode_file_path = implode(',', $filePath);
        return Restext::res(0, "上传成功！", $implode_file_path);
    }

    //根据图片的链接地址上传图片
    public static function useFileNameUpload($filename, $prefix = 'avatar'){
        //初始化
        $disk = QiniuStorage::disk('qiniu');
        $fileName = md5(time().rand(1111, 9999999)).randomkeys(10).'.jpg';
        // 上传到七牛
        $bool = $disk->put($prefix.'_'.$fileName,file_get_contents($filename));
        if ($bool) {
            $path = $disk->downloadUrl($prefix.'_'.$fileName);
            return $path;
        }
    }

    /**
     * @param $request
     * @param string $prefix
     * @return string
     * 上传单图到七牛
     */
    public static function uploadLoneyFile($request, $prefix = 'avatar'){
        //初始化
        $disk = QiniuStorage::disk('qiniu');

        $file = $request->file('file');

        if (!$file->isValid()) {
            return Restext::res(1, "上传图片出错，请重试！");
        }
        // 重命名文件
        $fileName = md5($file->getClientOriginalName().time().rand(1111, 9999999)).randomkeys(10).'.'.$file->getClientOriginalExtension();
        // 上传到七牛
        $bool = $disk->put($prefix.'_'.$fileName,file_get_contents($file->getRealPath()));
        if ($bool) {
            $path = $disk->downloadUrl($prefix.'_'.$fileName);
        }else{
            $path = '';
        }
        return $path;
    }

    /**
     * @return mixed
     * 获取七牛的上传token
     */
    public static function uploadToken(){
        //初始化
        $disk = QiniuStorage::disk('bqiniu');

        $token = $disk->uploadToken();
        return $token;
    }
}